/**
 * 小说信息
 * */

let $table = $('#novel-table'),
    $remove = $('#remove'),
    selections = [],
    key = 'Id';

let pageNumber = 1, pageSize = 10;
let pageListUrl = "/Novel/PageList";
let circleModalId = "circleModal", $circleModal = null; // 圆形进度条窗体及对象

$(function () {

    $table = $('#novel-table'),
        $remove = $('#remove');

    $("#btnAdd").unbind('click').bind('click', function () {
        $("#editModelLabel").html("小说信息添加");
        $('#editModel').modal('toggle');
    });

    initTable();

    // 关键词查询
    $('input[name="search"]').bind('keydown', function (event) {
        if (event.keyCode == "13") {
            pageNumber = 1;
            refreshTable();
        }
    });

    // 搜索
    $('#btnSearch').unbind('click').bind('click', function () {
        pageNumber = 1;
        refreshTable();
    });

    // 清空查询条件
    $('#btnClear').unbind('click').bind('click', function () {
        $('#toolbar form')[0].reset();
        pageNumber = 1;
        refreshTable();
    });
});

// 刷新表格数据
function refreshTable() {
    $table.bootstrapTable({ url: pageListUrl });
    $table.bootstrapTable('refresh', { pageNumber: pageNumber, pageSize: pageSize });
}

// 初始化表
function initTable() {

    //先销毁表格
    $table.bootstrapTable('destroy');

    $table.bootstrapTable({
        height: getHeight(),
        method: 'get', // 请求方式（*）
        dataType: "json", // 数据类型
        url: pageListUrl, // 请求后台地址,
        toolbar: '#toolbar', //工具按钮用哪个容器
        striped: true, // 使表格带有条纹
        uniqueId: key, // 唯一标识
        idField: key, // 标识哪个字段为id主键
        pagination: true, // 在表格底部显示分页工具栏
        pageSize: pageSize, // 分页大小
        pageNumber: pageNumber, // 当前页码
        pageList: [10, 20, 50, 100, 200, 500],
        sidePagination: "server", //表格分页的位置
        //设置为undefined可以获取pageNumber，pageSize，searchText，sortName，sortOrder
        //设置为limit可以获取limit, offset, search, sort, order
        queryParamsType: "undefined",
        queryParams: function queryParams(params) { //设置查询参数
            var param = {
                pageNumber: params.pageNumber,
                pageSize: params.pageSize,
                title: $("input[name='search']").val(),
                webId: $("#WebId").val()
            };
            pageNumber = params.pageNumber;
            return param;
        },
        columns: [
            [
                {
                    field: 'checked',
                    checkbox: true
                }, {
                    title: '序号',
                    field: 'RowNumber',
                    width: 60,
                    align: 'center',
                    formatter: function (value, row, index) {
                        var options = $table.bootstrapTable('getOptions');
                        return options.pageSize * (options.pageNumber - 1) + index + 1;
                    }
                }, {
                    title: '操作',
                    width: 90,
                    halign: 'center',
                    align: 'center',
                    events: operateEvents,
                    formatter: operateFormatter
                }, {
                    field: 'Title',
                    title: '小说标题',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'NovelUrl',
                    title: '小说地址',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'Author',
                    title: '作者',
                    width: 120,
                    halign: 'center',
                    align: 'center',
                    formatter: tipsFormatter
                }, {
                    field: 'StatusName',
                    title: '小说状态',
                    width: 120,
                    halign: 'center',
                    align: 'center',
                    formatter: tipsFormatter
                }, {
                    field: 'ChapterChar',
                    title: '章节模板',
                    width: 120,
                    halign: 'center',
                    align: 'center',
                    formatter: tipsFormatter
                }, {
                    field: 'ChapterCount',
                    title: '章节数量',
                    width: 120,
                    halign: 'center',
                    align: 'right',
                    formatter: tipsFormatter
                }, {
                    field: 'CreateTime',
                    title: '添加时间',
                    width: 105,
                    halign: 'center',
                    align: 'center',
                    formatter: function (value, row, index) {
                        return (value == null || value.length == 0) ? "" : value.toDateTimeString("yyyy-MM-dd hh:mm");
                    }
                }, {
                    field: 'UpdateTime',
                    title: '更新时间',
                    width: 105,
                    halign: 'center',
                    align: 'center',
                    formatter: function (value, row, index) {
                        return (value == null || value.length == 0) ? "" : value.toDateTimeString("yyyy-MM-dd hh:mm");
                    }
                }
            ]
        ],
        formatLoadingMessage: function () {
            return "请稍等，正在加载中...";
        },
        formatNoMatches: function () { //没有匹配的结果
            return '无符合条件的记录';
        }
    });

    $table.find("thead").addClass("table-dark");

    setTimeout(function () {
        $table.bootstrapTable('resetView');
        $('[data-toggle="tooltip"]').tooltip();
    }, 200);

    $table.on('check.bs.table uncheck.bs.table ' +
        'check-all.bs.table uncheck-all.bs.table', function () {
            $remove.prop('disabled', !$table.bootstrapTable('getSelections').length);

            // save your data, here just save the current page

            selections = getIdSelections();

            // push or splice the selections if you want to save all data selections

        });

    $remove.click(function () { // 批量删除
        var ids = getIdSelections();
        $remove.prop('disabled', true);
        BatchDelete(ids.toString()); // 批量删除
    });

    $(window).resize(function () {
        $table.bootstrapTable('resetView', {
            height: getHeight()
        });
    });
}

// 获取选择项
function getIdSelections() {
    return $.map($table.bootstrapTable('getSelections'), function (row) {
        return row[key];
    });
}

// 操作内容格式化
function operateFormatter(value, row, index) {
    let edit = ['<a class="edit" href="javascript:void(0)" title="修改小说信息">',
        '<i class="glyphicon glyphicon-edit"></i>',
        '</a>'];

    let remove = ['  <a class="remove" href="javascript:void(0)" title="删除小说信息">',
        '<i class="glyphicon glyphicon-remove"></i>',
        '</a>'];
    edit = edit.concat(remove);

    let detail = ['  <a class="detail" href="javascript:void(0)" title="章节管理">',
        '<i class="glyphicon glyphicon-th-list"></i>',
        '</a>'];
    edit = edit.concat(detail);

    let crawl = ['  <a class="crawl" href="javascript:void(0)" title="小说抓取">',
        '<i class="glyphicon icon-folder-plus"></i>',
        '</a>'];
    edit = edit.concat(crawl);

    let download = ['  <a class="download" href="javascript:void(0)" title="下载小说">',
        '<i class="glyphicon glyphicon-book"></i>',
        '</a>'];
    edit = edit.concat(download);

    return edit.join('');
}

// 操作事件响应
window.operateEvents = {
    'click .edit': function (e, value, row, index) {
        //alert('You click edit action, row: ' + JSON.stringify(row));

        //debugger;
        //console.info("编辑前获取行数据：");
        //console.info(row);

        $("#Id").val(row.Id); // 小说编号
        $("#WebId").val(row.WebId); // 网站编号
        $("#Title").val(row.Title); // 小说标题
        $("#NovelUrl").val(row.NovelUrl); // 小说地址
        $("#Author").val(row.Author); // 作者
        $("#Status").val(row.Status); // 小说状态：0-连载中；1-已完本；2-已太监；
        $("#ChapterChar").val(row.ChapterChar); // 章节模板，如第$2章
        $("#ChapterCount").val(row.ChapterCount); // 章节数量
        $("#CreateTime").val(row.CreateTime); // 添加时间
        $("#UpdateTime").val(row.UpdateTime); // 更新时间

        $("#editModelLabel").html("小说信息修改");
        $('#editModel').modal('toggle');
    },
    'click .remove': function (e, value, row, index) {
        Delete(row[key]); // 删除行数据
    },
    'click .detail': function (e, value, row, index) {
        //alert('You click edit action, row: ' + JSON.stringify(row));
        let txtWebId = $("#WebId").val(); // 网站编号
        let txtWebName = $("#WebName").val(); // 网站编号
        Page("/Chapter/Index?novelId=" + row.Id + "&novelName=" + encodeURIComponent(row.Title) + "&webId=" + txtWebId + "&webName=" + encodeURIComponent(txtWebName));

    }, 
    'click .crawl': function (e, value, row, index) {
        // 小说抓取
        Hsp.Modal.CircleMessage(circleModalId, `小说『${row.Title}』正在抓取中`);
        $("#" + circleModalId).modal("toggle");

        $.get("/Chapter/Crawl/" + row.Id + "?rnd=" + (Math.random() * 10), function (data) {
            //console.log(data);
            if (data && data.success) {
                toastr.success(data.message, "成功");
                refreshTable();
                $("#" + circleModalId).modal("hide");
            } else {
                toastr.error(data.message, "失败");
            }
        });
    },
    'click .download': function (e, value, row, index) {
        // 小说下载
        Page("/Novel/Download/" + row.Id + "?rnd=" + (Math.random() * 10));
    }
};

/// <summary>
/// 物理删除数据
/// </summary>

function Delete(id) {
    if (confirm("您确定要删除该小说信息吗？")) {
        $.ajax({
            type: "POST",
            url: "/Novel/Delete/" + id + "?rnd=" + (Math.random() * 10),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (rst) {
                //console.info(rst);
                if (rst && rst.success) {
                    refreshTable();
                    toastr.success(data.message, "成功");
                } else {
                    toastr.error(data.message, "失败");
                }
            }
        });
    }
}

/// <summary>
/// 批量物理删除
/// </summary>

function BatchDelete(ids) {
    if (confirm("您确定要批量删除这些小说信息吗？")) {
        $.ajax({
            type: "POST",
            url: "/Novel/BatchDelete/" + ids + "?rnd=" + (Math.random() * 10),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (rst) {
                //console.info(rst);
                if (rst && rst.success) {
                    refreshTable();
                    toastr.success(data.message, "成功");
                } else {
                    toastr.error(data.message, "失败");
                }
            }
        });
    }
}

$(function () {

    $('#editModel').on('hidden.bs.modal', function () { // 关闭模态窗体事件
        $("#editModel form")[0].reset();
        $("#btnSave").prop("disabled", false); // 解除保存按钮禁用
        $("#editModel form input[type='hidden']").val("");
    });

    $("#btnSave").unbind("click").bind("click", function () { // 小说信息数据保存

        let txtId = $("#Id").val(); // 小说编号
        let txtWebId = $("#WebId").val(); // 网站编号
        let txtTitle = $("#Title").val(); // 小说标题
        let txtNovelUrl = $("#NovelUrl").val(); // 小说地址
        let txtAuthor = $("#Author").val(); // 作者
        let txtStatus = $("#Status").val(); // 小说状态：0-连载中；1-已完本；2-已太监；
        let txtChapterChar = $("#ChapterChar").val(); // 章节模板，如第$2章
        let txtChapterCount = $("#ChapterCount").val(); // 章节数量
        let txtCreateTime = $("#CreateTime").val(); // 添加时间
        let txtUpdateTime = $("#UpdateTime").val(); // 更新时间

        if (txtStatus == undefined || txtStatus.length == 0) {
            txtStatus = "0";
        }
        if (txtChapterCount == undefined || txtChapterCount.length == 0) {
            txtChapterCount = "0";
        }

        // 字符串输入超长处理
        if (txtId && txtId.length > 36) {
            toastr.error('小说编号超过设定长度36！');
            $("#Id").focus();
            return;
        }
        if (txtWebId && txtWebId.length > 36) {
            toastr.error('网站编号超过设定长度36！');
            $("#WebId").focus();
            return;
        }
        if (txtAuthor && txtAuthor.length > 20) {
            toastr.error('作者超过设定长度20！');
            $("#Author").focus();
            return;
        }
        if (txtChapterChar && txtChapterChar.length > 20) {
            toastr.error('章节模板，如第$2章超过设定长度20！');
            $("#ChapterChar").focus();
            return;
        }

        $("#btnSave").prop("disabled", "disabled");

        // 字符串中异常字符处理
        if (txtId != undefined && txtId.length > 0) {
            txtId = txtId.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 小说编号
        }
        if (txtWebId != undefined && txtWebId.length > 0) {
            txtWebId = txtWebId.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 网站编号
        }
        if (txtTitle != undefined && txtTitle.length > 0) {
            txtTitle = txtTitle.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 小说标题
        }
        if (txtNovelUrl != undefined && txtNovelUrl.length > 0) {
            txtNovelUrl = txtNovelUrl.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 小说地址
        }
        if (txtAuthor != undefined && txtAuthor.length > 0) {
            txtAuthor = txtAuthor.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 作者
        }
        if (txtChapterChar != undefined && txtChapterChar.length > 0) {
            txtChapterChar = txtChapterChar.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 章节模板，如第$2章
        }

        let obj = {};
        obj.Id = txtId; // 小说编号
        obj.WebId = txtWebId; // 网站编号
        obj.Title = txtTitle; // 小说标题
        obj.NovelUrl = txtNovelUrl; // 小说地址
        obj.Author = txtAuthor; // 作者
        obj.Status = txtStatus; // 小说状态：0-连载中；1-已完本；2-已太监；
        obj.ChapterChar = txtChapterChar; // 章节模板，如第$2章
        obj.ChapterCount = txtChapterCount; // 章节数量
        obj.CreateTime = txtCreateTime; // 添加时间
        obj.UpdateTime = txtUpdateTime; // 更新时间

        //console.info(JSON.stringify(obj));

        $.ajax({
            type: "POST",
            url: "/Novel/Save/?rnd=" + (Math.random() * 10),
            data: JSON.stringify(obj),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (rst) {
                //console.info(rst);
                if (rst && rst.success) {

                    refreshTable();

                    $("#editModel").modal("hide");

                    $("#btnSave").prop("disabled", "");
                } else {
                    toastr.error(rst.message, "失败");
                }
            }
        });
    });

});

